<!--
  Copyright (c) 2011 The Chromium Authors. All rights reserved.
  Use of this source code is governed by a BSD-style license that can
  be found in the LICENSE file.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="-1" />
    <script type="text/javascript" src="nacltest.js"></script>
    <title>Native Client Exit Status Test</title>
  </head>

  <body>
    <h1>Native Client Exit Status Test</h1>

  <script type="text/javascript">
    //<![CDATA[
function createModule(id, src, type) {
  return createNaClEmbed({
    id: id,
    src: src,
    width: 400,
    height: 400,
    type: type
  });
}

var mime = "application/x-nacl";
if (getTestArguments()["pnacl"] !== undefined) {
  mime = "application/x-pnacl";
}
var embed = createModule("naclModule", "pm_exit_status_test.nmf", mime);
embed.basic_tests = "2";
embed.stress_tests = "0";
document.body.appendChild(embed);

var tester = new Tester($('body'));
var args = getTestArguments({'expected_exit' :
  'THIS TEST CANNOT RUN STANDALONE -- run using scons instead'});

function setupTests(tester, plugin) {
  tester.addAsyncTest('StartTest', function(status) {
    plugin.addEventListener('message', status.wrap(function(message_event) {
      this.removeEventListener('message', arguments.callee, false);
      status.assertEqual(message_event.data,
                         'hello world');
      status.pass();
    }), true);
    plugin.postMessage('init');
  });
  tester.addAsyncTest('Exit0Test', function(status) {
    plugin.addEventListener('crash', status.wrap(function(crash_event) {
      this.removeEventListener('crash', arguments.callee, false);
      status.assertEqual($('naclModule').exitStatus,
                         parseInt(args.expected_exit));
      status.pass();
    }), true);
    plugin.postMessage(args.trigger);
  });
}

var tester = new Tester();
setupTests(tester, $('naclModule'));
tester.waitFor($('naclModule'));
tester.run();
// otherwise trivially passes
    //]]>
  </script>
  </body>
</html>
